// luch-request请求插件，类似axios
import Request from '@/utils/luch-request/index.js'
import baseUrl from './baseUrl.js'

const base = baseUrl
const http = new Request()
let v = ''
// #ifdef MP-WEIXIN
v = wx.getAccountInfoSync().miniProgram.envVersion
// #endif
// 跳转到登录页面
const toLogin = msg => {
	setTimeout(() => {
		uni.removeStorageSync('token')
		uni.removeStorageSync('userInfo')
		uni.reLaunch({
			url: '/pages/login/index',
		})
	},1000)
}

// 消息提示框弹窗
const msgAlert = (msg, success = () => {}) => {
	uni.showToast({
		title: msg || '网络异常，请稍后重试',
		icon: 'none',
		duration: 1000,
		success: success,
	})
}

// 设置默认配置
http.setConfig(config => {
	config.baseURL = baseUrl // 接口地址
	config.timeout = 6000
	return config
})

http.interceptors.request.use(config => {
	if(v == 'trial') {
		console.log(config,'-----------接口配置111-----------')
	}
	config.header = {
		'lec-token': uni.getStorageSync('token'),
		...config.header,
	}
	return config
})

// 响应拦截器
http.interceptors.response.use(
	// 成功响应
	res => {
		if(res.data && v == 'trial') {
			console.log(res.data,'-----------接口参数111-----------')
		}
		if (res.statusCode === 200) {
			switch (res.data.code) {
				case -1:	
					msgAlert(res.data.msg)
					break
				case -2:
					msgAlert(res.data.msg)
					break
				case 500:
					msgAlert(res.data.msg)
					break
				case 200:
					break
				case 401:
					msgAlert('请登录！')
					uni.removeStorageSync('token')
					break
				default: {
					msgAlert(res.data.msg)
				}
			}
			return res.data
		} else {
			return Promise.reject(res.data)
		}
	},

	// 错误响应
	res => {
		if(res.data && v == 'trial') {
			let err = res.data.match(/<h[1-2]>(.*?)<\/h[1-2]>/g)
			res.data = err
			console.error(res,'-----------接口错误响应-----------')
		}
		if (res.statusCode === 500) {
			switch (res.data.code) {
				case -1:
					msgAlert(res.data.msg)
					break
				case -2:
					msgAlert(res.data.msg)
					break
				case -3:
					msgAlert(res.data.msg)
					break
				case -4:
					msgAlert(res.data.msg)
					break
				case -5:
					msgAlert(res.data.msg)
					break
				case -6:
					let msg = res.data.msg + ', 请稍后'
					msgAlert(res.data.msg)
					break
				case 500:
					msgAlert('系统异常，请稍后重试或联系客服')
					break
				case 501:
					msgAlert('系统异常，请稍后重试或联系客服')
					break
				case 502:
					msgAlert(res.data.msg)
					break
				case 401:
					msgAlert('请登录')
					uni.removeStorageSync('token')
					break
				default: {
					msgAlert('系统异常，请稍后重试或联系客服')
				}
			}
		} else {
			switch (res.statusCode) {
				case 401:
					msgAlert('请登录')
					uni.removeStorageSync('token')
					break
				case 403:
					msgAlert(res.data.msg)
					break
				case 404:
					msgAlert(res.data.msg)
					break
				case 501:
					msgAlert('系统异常，请稍后重试或联系客服')
					break
				case 502:
					msgAlert('系统异常，请稍后重试或联系客服')
					break
				default: {
					msgAlert('系统异常，请稍后重试或联系客服')
				}
			}
		}
		return Promise.reject(res.data.msg)
	}
)

export default http
